/**
 * Copyright (c) 2021 TNO/ESI
 *  This program and the accompanying materials
 *  are made available under the terms of the Eclipse Public License 2.0
 *  which accompanies this distribution, and is available at
 *  https://www.eclipse.org/legal/epl-2.0/
 * 
 *  SPDX-License-Identifier: EPL-2.0
 * 
 *  Contributors:
 *     TNO/ESI - initial API and implementation
 *     Obeo - refactoring
 */
package org.eclipse.poosl.provider;

import java.util.ArrayList;
import java.util.Collection;

import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;

import org.eclipse.emf.edit.provider.ChangeNotifier;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.IChangeNotifier;
import org.eclipse.emf.edit.provider.IDisposable;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.INotifyChangedListener;
import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

import org.eclipse.poosl.util.PooslAdapterFactory;

/**
 * This is the factory that is used to provide the interfaces needed to support Viewers.
 * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
 * The adapters also support Eclipse property sheets.
 * Note that most of the adapters are shared among multiple instances.
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
public class PooslItemProviderAdapterFactory extends PooslAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable
{
	/**
	 * This keeps track of the root adapter factory that delegates to this adapter factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ComposedAdapterFactory parentAdapterFactory;

	/**
	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected IChangeNotifier changeNotifier = new ChangeNotifier();

	/**
	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected Collection<Object> supportedTypes = new ArrayList<Object>();

	/**
	 * This constructs an instance.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PooslItemProviderAdapterFactory()
	{
		supportedTypes.add(IEditingDomainItemProvider.class);
		supportedTypes.add(IStructuredItemContentProvider.class);
		supportedTypes.add(ITreeItemContentProvider.class);
		supportedTypes.add(IItemLabelProvider.class);
		supportedTypes.add(IItemPropertySource.class);
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.Poosl} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PooslItemProvider pooslItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.Poosl}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPooslAdapter()
	{
		if (pooslItemProvider == null)
		{
			pooslItemProvider = new PooslItemProvider(this);
		}

		return pooslItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.Import} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ImportItemProvider importItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.Import}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createImportAdapter()
	{
		if (importItemProvider == null)
		{
			importItemProvider = new ImportItemProvider(this);
		}

		return importItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.Channel} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ChannelItemProvider channelItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.Channel}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createChannelAdapter()
	{
		if (channelItemProvider == null)
		{
			channelItemProvider = new ChannelItemProvider(this);
		}

		return channelItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.InstancePort} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected InstancePortItemProvider instancePortItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.InstancePort}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createInstancePortAdapter()
	{
		if (instancePortItemProvider == null)
		{
			instancePortItemProvider = new InstancePortItemProvider(this);
		}

		return instancePortItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.Instance} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected InstanceItemProvider instanceItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.Instance}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createInstanceAdapter()
	{
		if (instanceItemProvider == null)
		{
			instanceItemProvider = new InstanceItemProvider(this);
		}

		return instanceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.InstanceParameter} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected InstanceParameterItemProvider instanceParameterItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.InstanceParameter}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createInstanceParameterAdapter()
	{
		if (instanceParameterItemProvider == null)
		{
			instanceParameterItemProvider = new InstanceParameterItemProvider(this);
		}

		return instanceParameterItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.InstantiableClass} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected InstantiableClassItemProvider instantiableClassItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.InstantiableClass}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createInstantiableClassAdapter()
	{
		if (instantiableClassItemProvider == null)
		{
			instantiableClassItemProvider = new InstantiableClassItemProvider(this);
		}

		return instantiableClassItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.Port} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PortItemProvider portItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.Port}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPortAdapter()
	{
		if (portItemProvider == null)
		{
			portItemProvider = new PortItemProvider(this);
		}

		return portItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.Declaration} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DeclarationItemProvider declarationItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.Declaration}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDeclarationAdapter()
	{
		if (declarationItemProvider == null)
		{
			declarationItemProvider = new DeclarationItemProvider(this);
		}

		return declarationItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.Variable} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected VariableItemProvider variableItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.Variable}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createVariableAdapter()
	{
		if (variableItemProvider == null)
		{
			variableItemProvider = new VariableItemProvider(this);
		}

		return variableItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.DataClass} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DataClassItemProvider dataClassItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.DataClass}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDataClassAdapter()
	{
		if (dataClassItemProvider == null)
		{
			dataClassItemProvider = new DataClassItemProvider(this);
		}

		return dataClassItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.DataMethodNamed} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DataMethodNamedItemProvider dataMethodNamedItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.DataMethodNamed}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDataMethodNamedAdapter()
	{
		if (dataMethodNamedItemProvider == null)
		{
			dataMethodNamedItemProvider = new DataMethodNamedItemProvider(this);
		}

		return dataMethodNamedItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.DataMethodUnaryOperator} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DataMethodUnaryOperatorItemProvider dataMethodUnaryOperatorItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.DataMethodUnaryOperator}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDataMethodUnaryOperatorAdapter()
	{
		if (dataMethodUnaryOperatorItemProvider == null)
		{
			dataMethodUnaryOperatorItemProvider = new DataMethodUnaryOperatorItemProvider(this);
		}

		return dataMethodUnaryOperatorItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.DataMethodBinaryOperator} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DataMethodBinaryOperatorItemProvider dataMethodBinaryOperatorItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.DataMethodBinaryOperator}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDataMethodBinaryOperatorAdapter()
	{
		if (dataMethodBinaryOperatorItemProvider == null)
		{
			dataMethodBinaryOperatorItemProvider = new DataMethodBinaryOperatorItemProvider(this);
		}

		return dataMethodBinaryOperatorItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.ExpressionSequence} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ExpressionSequenceItemProvider expressionSequenceItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.ExpressionSequence}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createExpressionSequenceAdapter()
	{
		if (expressionSequenceItemProvider == null)
		{
			expressionSequenceItemProvider = new ExpressionSequenceItemProvider(this);
		}

		return expressionSequenceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.ExpressionSequenceRoundBracket} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ExpressionSequenceRoundBracketItemProvider expressionSequenceRoundBracketItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.ExpressionSequenceRoundBracket}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createExpressionSequenceRoundBracketAdapter()
	{
		if (expressionSequenceRoundBracketItemProvider == null)
		{
			expressionSequenceRoundBracketItemProvider = new ExpressionSequenceRoundBracketItemProvider(this);
		}

		return expressionSequenceRoundBracketItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.AssignmentExpression} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AssignmentExpressionItemProvider assignmentExpressionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.AssignmentExpression}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAssignmentExpressionAdapter()
	{
		if (assignmentExpressionItemProvider == null)
		{
			assignmentExpressionItemProvider = new AssignmentExpressionItemProvider(this);
		}

		return assignmentExpressionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.CurrentTimeExpression} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected CurrentTimeExpressionItemProvider currentTimeExpressionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.CurrentTimeExpression}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createCurrentTimeExpressionAdapter()
	{
		if (currentTimeExpressionItemProvider == null)
		{
			currentTimeExpressionItemProvider = new CurrentTimeExpressionItemProvider(this);
		}

		return currentTimeExpressionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.DataMethodCallExpression} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DataMethodCallExpressionItemProvider dataMethodCallExpressionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.DataMethodCallExpression}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDataMethodCallExpressionAdapter()
	{
		if (dataMethodCallExpressionItemProvider == null)
		{
			dataMethodCallExpressionItemProvider = new DataMethodCallExpressionItemProvider(this);
		}

		return dataMethodCallExpressionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.IfExpression} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected IfExpressionItemProvider ifExpressionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.IfExpression}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createIfExpressionAdapter()
	{
		if (ifExpressionItemProvider == null)
		{
			ifExpressionItemProvider = new IfExpressionItemProvider(this);
		}

		return ifExpressionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.SwitchExpression} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SwitchExpressionItemProvider switchExpressionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.SwitchExpression}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSwitchExpressionAdapter()
	{
		if (switchExpressionItemProvider == null)
		{
			switchExpressionItemProvider = new SwitchExpressionItemProvider(this);
		}

		return switchExpressionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.SwitchExpressionCase} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SwitchExpressionCaseItemProvider switchExpressionCaseItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.SwitchExpressionCase}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSwitchExpressionCaseAdapter()
	{
		if (switchExpressionCaseItemProvider == null)
		{
			switchExpressionCaseItemProvider = new SwitchExpressionCaseItemProvider(this);
		}

		return switchExpressionCaseItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.NewExpression} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected NewExpressionItemProvider newExpressionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.NewExpression}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createNewExpressionAdapter()
	{
		if (newExpressionItemProvider == null)
		{
			newExpressionItemProvider = new NewExpressionItemProvider(this);
		}

		return newExpressionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.ReturnExpression} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ReturnExpressionItemProvider returnExpressionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.ReturnExpression}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createReturnExpressionAdapter()
	{
		if (returnExpressionItemProvider == null)
		{
			returnExpressionItemProvider = new ReturnExpressionItemProvider(this);
		}

		return returnExpressionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.SelfExpression} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SelfExpressionItemProvider selfExpressionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.SelfExpression}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSelfExpressionAdapter()
	{
		if (selfExpressionItemProvider == null)
		{
			selfExpressionItemProvider = new SelfExpressionItemProvider(this);
		}

		return selfExpressionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.VariableExpression} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected VariableExpressionItemProvider variableExpressionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.VariableExpression}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createVariableExpressionAdapter()
	{
		if (variableExpressionItemProvider == null)
		{
			variableExpressionItemProvider = new VariableExpressionItemProvider(this);
		}

		return variableExpressionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.WhileExpression} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected WhileExpressionItemProvider whileExpressionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.WhileExpression}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createWhileExpressionAdapter()
	{
		if (whileExpressionItemProvider == null)
		{
			whileExpressionItemProvider = new WhileExpressionItemProvider(this);
		}

		return whileExpressionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.BinaryOperatorExpression} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected BinaryOperatorExpressionItemProvider binaryOperatorExpressionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.BinaryOperatorExpression}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createBinaryOperatorExpressionAdapter()
	{
		if (binaryOperatorExpressionItemProvider == null)
		{
			binaryOperatorExpressionItemProvider = new BinaryOperatorExpressionItemProvider(this);
		}

		return binaryOperatorExpressionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.UnaryOperatorExpression} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected UnaryOperatorExpressionItemProvider unaryOperatorExpressionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.UnaryOperatorExpression}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createUnaryOperatorExpressionAdapter()
	{
		if (unaryOperatorExpressionItemProvider == null)
		{
			unaryOperatorExpressionItemProvider = new UnaryOperatorExpressionItemProvider(this);
		}

		return unaryOperatorExpressionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.BooleanConstant} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected BooleanConstantItemProvider booleanConstantItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.BooleanConstant}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createBooleanConstantAdapter()
	{
		if (booleanConstantItemProvider == null)
		{
			booleanConstantItemProvider = new BooleanConstantItemProvider(this);
		}

		return booleanConstantItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.CharacterConstant} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected CharacterConstantItemProvider characterConstantItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.CharacterConstant}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createCharacterConstantAdapter()
	{
		if (characterConstantItemProvider == null)
		{
			characterConstantItemProvider = new CharacterConstantItemProvider(this);
		}

		return characterConstantItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.IntegerConstant} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected IntegerConstantItemProvider integerConstantItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.IntegerConstant}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createIntegerConstantAdapter()
	{
		if (integerConstantItemProvider == null)
		{
			integerConstantItemProvider = new IntegerConstantItemProvider(this);
		}

		return integerConstantItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.NilConstant} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected NilConstantItemProvider nilConstantItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.NilConstant}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createNilConstantAdapter()
	{
		if (nilConstantItemProvider == null)
		{
			nilConstantItemProvider = new NilConstantItemProvider(this);
		}

		return nilConstantItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.RealConstant} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected RealConstantItemProvider realConstantItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.RealConstant}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createRealConstantAdapter()
	{
		if (realConstantItemProvider == null)
		{
			realConstantItemProvider = new RealConstantItemProvider(this);
		}

		return realConstantItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.FloatConstant} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected FloatConstantItemProvider floatConstantItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.FloatConstant}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createFloatConstantAdapter()
	{
		if (floatConstantItemProvider == null)
		{
			floatConstantItemProvider = new FloatConstantItemProvider(this);
		}

		return floatConstantItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.StringConstant} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected StringConstantItemProvider stringConstantItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.StringConstant}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createStringConstantAdapter()
	{
		if (stringConstantItemProvider == null)
		{
			stringConstantItemProvider = new StringConstantItemProvider(this);
		}

		return stringConstantItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.EnvironmentConstant} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected EnvironmentConstantItemProvider environmentConstantItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.EnvironmentConstant}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createEnvironmentConstantAdapter()
	{
		if (environmentConstantItemProvider == null)
		{
			environmentConstantItemProvider = new EnvironmentConstantItemProvider(this);
		}

		return environmentConstantItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.ProcessClass} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ProcessClassItemProvider processClassItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.ProcessClass}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createProcessClassAdapter()
	{
		if (processClassItemProvider == null)
		{
			processClassItemProvider = new ProcessClassItemProvider(this);
		}

		return processClassItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.MessageSignature} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MessageSignatureItemProvider messageSignatureItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.MessageSignature}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMessageSignatureAdapter()
	{
		if (messageSignatureItemProvider == null)
		{
			messageSignatureItemProvider = new MessageSignatureItemProvider(this);
		}

		return messageSignatureItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.MessageParameter} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MessageParameterItemProvider messageParameterItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.MessageParameter}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMessageParameterAdapter()
	{
		if (messageParameterItemProvider == null)
		{
			messageParameterItemProvider = new MessageParameterItemProvider(this);
		}

		return messageParameterItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.ProcessMethod} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ProcessMethodItemProvider processMethodItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.ProcessMethod}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createProcessMethodAdapter()
	{
		if (processMethodItemProvider == null)
		{
			processMethodItemProvider = new ProcessMethodItemProvider(this);
		}

		return processMethodItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.StatementSequence} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected StatementSequenceItemProvider statementSequenceItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.StatementSequence}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createStatementSequenceAdapter()
	{
		if (statementSequenceItemProvider == null)
		{
			statementSequenceItemProvider = new StatementSequenceItemProvider(this);
		}

		return statementSequenceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.StatementSequenceRoundBracket} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected StatementSequenceRoundBracketItemProvider statementSequenceRoundBracketItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.StatementSequenceRoundBracket}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createStatementSequenceRoundBracketAdapter()
	{
		if (statementSequenceRoundBracketItemProvider == null)
		{
			statementSequenceRoundBracketItemProvider = new StatementSequenceRoundBracketItemProvider(this);
		}

		return statementSequenceRoundBracketItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.AbortStatement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AbortStatementItemProvider abortStatementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.AbortStatement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAbortStatementAdapter()
	{
		if (abortStatementItemProvider == null)
		{
			abortStatementItemProvider = new AbortStatementItemProvider(this);
		}

		return abortStatementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.DelayStatement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DelayStatementItemProvider delayStatementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.DelayStatement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDelayStatementAdapter()
	{
		if (delayStatementItemProvider == null)
		{
			delayStatementItemProvider = new DelayStatementItemProvider(this);
		}

		return delayStatementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.ExpressionStatement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ExpressionStatementItemProvider expressionStatementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.ExpressionStatement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createExpressionStatementAdapter()
	{
		if (expressionStatementItemProvider == null)
		{
			expressionStatementItemProvider = new ExpressionStatementItemProvider(this);
		}

		return expressionStatementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.GuardedStatement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected GuardedStatementItemProvider guardedStatementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.GuardedStatement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createGuardedStatementAdapter()
	{
		if (guardedStatementItemProvider == null)
		{
			guardedStatementItemProvider = new GuardedStatementItemProvider(this);
		}

		return guardedStatementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.IfStatement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected IfStatementItemProvider ifStatementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.IfStatement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createIfStatementAdapter()
	{
		if (ifStatementItemProvider == null)
		{
			ifStatementItemProvider = new IfStatementItemProvider(this);
		}

		return ifStatementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.SwitchStatement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SwitchStatementItemProvider switchStatementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.SwitchStatement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSwitchStatementAdapter()
	{
		if (switchStatementItemProvider == null)
		{
			switchStatementItemProvider = new SwitchStatementItemProvider(this);
		}

		return switchStatementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.SwitchStatementCase} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SwitchStatementCaseItemProvider switchStatementCaseItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.SwitchStatementCase}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSwitchStatementCaseAdapter()
	{
		if (switchStatementCaseItemProvider == null)
		{
			switchStatementCaseItemProvider = new SwitchStatementCaseItemProvider(this);
		}

		return switchStatementCaseItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.InterruptStatement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected InterruptStatementItemProvider interruptStatementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.InterruptStatement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createInterruptStatementAdapter()
	{
		if (interruptStatementItemProvider == null)
		{
			interruptStatementItemProvider = new InterruptStatementItemProvider(this);
		}

		return interruptStatementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.ParStatement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ParStatementItemProvider parStatementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.ParStatement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createParStatementAdapter()
	{
		if (parStatementItemProvider == null)
		{
			parStatementItemProvider = new ParStatementItemProvider(this);
		}

		return parStatementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.ProcessMethodCall} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ProcessMethodCallItemProvider processMethodCallItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.ProcessMethodCall}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createProcessMethodCallAdapter()
	{
		if (processMethodCallItemProvider == null)
		{
			processMethodCallItemProvider = new ProcessMethodCallItemProvider(this);
		}

		return processMethodCallItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.ReceiveStatement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ReceiveStatementItemProvider receiveStatementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.ReceiveStatement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createReceiveStatementAdapter()
	{
		if (receiveStatementItemProvider == null)
		{
			receiveStatementItemProvider = new ReceiveStatementItemProvider(this);
		}

		return receiveStatementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.SendStatement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SendStatementItemProvider sendStatementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.SendStatement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSendStatementAdapter()
	{
		if (sendStatementItemProvider == null)
		{
			sendStatementItemProvider = new SendStatementItemProvider(this);
		}

		return sendStatementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.SelStatement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SelStatementItemProvider selStatementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.SelStatement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSelStatementAdapter()
	{
		if (selStatementItemProvider == null)
		{
			selStatementItemProvider = new SelStatementItemProvider(this);
		}

		return selStatementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.SkipStatement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SkipStatementItemProvider skipStatementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.SkipStatement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSkipStatementAdapter()
	{
		if (skipStatementItemProvider == null)
		{
			skipStatementItemProvider = new SkipStatementItemProvider(this);
		}

		return skipStatementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.WhileStatement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected WhileStatementItemProvider whileStatementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.WhileStatement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createWhileStatementAdapter()
	{
		if (whileStatementItemProvider == null)
		{
			whileStatementItemProvider = new WhileStatementItemProvider(this);
		}

		return whileStatementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.PortExpression} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PortExpressionItemProvider portExpressionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.PortExpression}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPortExpressionAdapter()
	{
		if (portExpressionItemProvider == null)
		{
			portExpressionItemProvider = new PortExpressionItemProvider(this);
		}

		return portExpressionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.PortReference} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PortReferenceItemProvider portReferenceItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.PortReference}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPortReferenceAdapter()
	{
		if (portReferenceItemProvider == null)
		{
			portReferenceItemProvider = new PortReferenceItemProvider(this);
		}

		return portReferenceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.ClusterClass} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ClusterClassItemProvider clusterClassItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.ClusterClass}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createClusterClassAdapter()
	{
		if (clusterClassItemProvider == null)
		{
			clusterClassItemProvider = new ClusterClassItemProvider(this);
		}

		return clusterClassItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.OutputVariable} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected OutputVariableItemProvider outputVariableItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.OutputVariable}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createOutputVariableAdapter()
	{
		if (outputVariableItemProvider == null)
		{
			outputVariableItemProvider = new OutputVariableItemProvider(this);
		}

		return outputVariableItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.poosl.Annotation} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AnnotationItemProvider annotationItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.poosl.Annotation}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAnnotationAdapter()
	{
		if (annotationItemProvider == null)
		{
			annotationItemProvider = new AnnotationItemProvider(this);
		}

		return annotationItemProvider;
	}

	/**
	 * This returns the root adapter factory that contains this factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ComposeableAdapterFactory getRootAdapterFactory()
	{
		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
	}

	/**
	 * This sets the composed adapter factory that contains this factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory)
	{
		this.parentAdapterFactory = parentAdapterFactory;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean isFactoryForType(Object type)
	{
		return supportedTypes.contains(type) || super.isFactoryForType(type);
	}

	/**
	 * This implementation substitutes the factory itself as the key for the adapter.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter adapt(Notifier notifier, Object type)
	{
		return super.adapt(notifier, this);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object adapt(Object object, Object type)
	{
		if (isFactoryForType(type))
		{
			Object adapter = super.adapt(object, type);
			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter)))
			{
				return adapter;
			}
		}

		return null;
	}

	/**
	 * This adds a listener.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void addListener(INotifyChangedListener notifyChangedListener)
	{
		changeNotifier.addListener(notifyChangedListener);
	}

	/**
	 * This removes a listener.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void removeListener(INotifyChangedListener notifyChangedListener)
	{
		changeNotifier.removeListener(notifyChangedListener);
	}

	/**
	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void fireNotifyChanged(Notification notification)
	{
		changeNotifier.fireNotifyChanged(notification);

		if (parentAdapterFactory != null)
		{
			parentAdapterFactory.fireNotifyChanged(notification);
		}
	}

	/**
	 * This disposes all of the item providers created by this factory. 
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void dispose()
	{
		if (pooslItemProvider != null) pooslItemProvider.dispose();
		if (importItemProvider != null) importItemProvider.dispose();
		if (channelItemProvider != null) channelItemProvider.dispose();
		if (instancePortItemProvider != null) instancePortItemProvider.dispose();
		if (instanceItemProvider != null) instanceItemProvider.dispose();
		if (instanceParameterItemProvider != null) instanceParameterItemProvider.dispose();
		if (instantiableClassItemProvider != null) instantiableClassItemProvider.dispose();
		if (portItemProvider != null) portItemProvider.dispose();
		if (declarationItemProvider != null) declarationItemProvider.dispose();
		if (variableItemProvider != null) variableItemProvider.dispose();
		if (dataClassItemProvider != null) dataClassItemProvider.dispose();
		if (dataMethodNamedItemProvider != null) dataMethodNamedItemProvider.dispose();
		if (dataMethodUnaryOperatorItemProvider != null) dataMethodUnaryOperatorItemProvider.dispose();
		if (dataMethodBinaryOperatorItemProvider != null) dataMethodBinaryOperatorItemProvider.dispose();
		if (expressionSequenceItemProvider != null) expressionSequenceItemProvider.dispose();
		if (expressionSequenceRoundBracketItemProvider != null) expressionSequenceRoundBracketItemProvider.dispose();
		if (assignmentExpressionItemProvider != null) assignmentExpressionItemProvider.dispose();
		if (currentTimeExpressionItemProvider != null) currentTimeExpressionItemProvider.dispose();
		if (dataMethodCallExpressionItemProvider != null) dataMethodCallExpressionItemProvider.dispose();
		if (ifExpressionItemProvider != null) ifExpressionItemProvider.dispose();
		if (switchExpressionItemProvider != null) switchExpressionItemProvider.dispose();
		if (switchExpressionCaseItemProvider != null) switchExpressionCaseItemProvider.dispose();
		if (newExpressionItemProvider != null) newExpressionItemProvider.dispose();
		if (returnExpressionItemProvider != null) returnExpressionItemProvider.dispose();
		if (selfExpressionItemProvider != null) selfExpressionItemProvider.dispose();
		if (variableExpressionItemProvider != null) variableExpressionItemProvider.dispose();
		if (whileExpressionItemProvider != null) whileExpressionItemProvider.dispose();
		if (binaryOperatorExpressionItemProvider != null) binaryOperatorExpressionItemProvider.dispose();
		if (unaryOperatorExpressionItemProvider != null) unaryOperatorExpressionItemProvider.dispose();
		if (booleanConstantItemProvider != null) booleanConstantItemProvider.dispose();
		if (characterConstantItemProvider != null) characterConstantItemProvider.dispose();
		if (integerConstantItemProvider != null) integerConstantItemProvider.dispose();
		if (nilConstantItemProvider != null) nilConstantItemProvider.dispose();
		if (realConstantItemProvider != null) realConstantItemProvider.dispose();
		if (floatConstantItemProvider != null) floatConstantItemProvider.dispose();
		if (stringConstantItemProvider != null) stringConstantItemProvider.dispose();
		if (environmentConstantItemProvider != null) environmentConstantItemProvider.dispose();
		if (processClassItemProvider != null) processClassItemProvider.dispose();
		if (messageSignatureItemProvider != null) messageSignatureItemProvider.dispose();
		if (messageParameterItemProvider != null) messageParameterItemProvider.dispose();
		if (processMethodItemProvider != null) processMethodItemProvider.dispose();
		if (statementSequenceItemProvider != null) statementSequenceItemProvider.dispose();
		if (statementSequenceRoundBracketItemProvider != null) statementSequenceRoundBracketItemProvider.dispose();
		if (abortStatementItemProvider != null) abortStatementItemProvider.dispose();
		if (delayStatementItemProvider != null) delayStatementItemProvider.dispose();
		if (expressionStatementItemProvider != null) expressionStatementItemProvider.dispose();
		if (guardedStatementItemProvider != null) guardedStatementItemProvider.dispose();
		if (ifStatementItemProvider != null) ifStatementItemProvider.dispose();
		if (switchStatementItemProvider != null) switchStatementItemProvider.dispose();
		if (switchStatementCaseItemProvider != null) switchStatementCaseItemProvider.dispose();
		if (interruptStatementItemProvider != null) interruptStatementItemProvider.dispose();
		if (parStatementItemProvider != null) parStatementItemProvider.dispose();
		if (processMethodCallItemProvider != null) processMethodCallItemProvider.dispose();
		if (receiveStatementItemProvider != null) receiveStatementItemProvider.dispose();
		if (sendStatementItemProvider != null) sendStatementItemProvider.dispose();
		if (selStatementItemProvider != null) selStatementItemProvider.dispose();
		if (skipStatementItemProvider != null) skipStatementItemProvider.dispose();
		if (whileStatementItemProvider != null) whileStatementItemProvider.dispose();
		if (portExpressionItemProvider != null) portExpressionItemProvider.dispose();
		if (portReferenceItemProvider != null) portReferenceItemProvider.dispose();
		if (clusterClassItemProvider != null) clusterClassItemProvider.dispose();
		if (outputVariableItemProvider != null) outputVariableItemProvider.dispose();
		if (annotationItemProvider != null) annotationItemProvider.dispose();
	}

}
